-- ME
-- Create by weism
-- 管理我的信息

ME = ME or {};

-- 是否正在游戏中
ME.isInGame = false;

-- 是否快捷登录
ME.expressLogin = false;

-- 服务器编号
ME.serverId = 0;

-- 玩家对象
ME.user = nil;

-- 玩家当前所在的房间（building）
ME.room = nil;

-- 我的实际坐标点
ME.realCenter = { x = 13156508, y = 2796032 };

-- 当前所在房间
ME.room = nil;

-- 取得我的rid
function ME.getRid()
    if (ME.user ~= nil) then
        return ME.user.rid;
    end
end

-- 通知登录完毕了
function ME.loginNotifyOk(express)
    cclog(string.format("[%f]用户进入了游戏", socket.gettime()));

    -- 标记处于游戏中了
    ME.isInGame = true;

    -- 标记是否快捷登录
    ME.expressLogin = express or 0;

    -- 刷新下属性
    PropM.refresh(ME.user);

    -- 发出事件
    EventMgr.fire(event.LOGIN_OK);

    cclog(string.format("[%f]登录完成了", socket.gettime()));
end

-- 通知玩家退出游戏
function ME.stopGame()
    ME.isInGame = false;

    -- 将玩家身上所有数据清理下
    -- TODO
end

-- 通知开始游戏
function ME.startGame()
    cclog(string.format("[%f]你开始进行游戏", socket.gettime()));

    -- 清理下环境
    -- TODO

    -- 产出开始游戏的事件
    EventMgr.fire(event.START_GAME);
end

-- 进入房间
function ME.enterRoom(building)
    ME.room = building;

    EventMgr.fire(event.ENTER_ROOM, building);
end

--  离开房间
function ME.leaveRoom()
    EventMgr.fire(event.LEAVE_ROOM, ME.room.rid);

    ME.room = nil;
end

-- 创建玩家
function ME.produceUser(info)
    local user = User.new(info);

    -- 技能信息
    user.skills = info.skills;

    -- 佩戴的技能
    if info.skills_option ~= nil then
        user.skillOption = info.skills_option;
    end

    -- 已激活的天赋
    user.talents = info.talents;

    -- 装备
    user.equipments = info.equipments or {};
    ME.user = user;

    EventMgr.fire(event.USER_INFO_UPDATED);
    SyncM.updateSync(user.dbase:query("sync"));

    -- 同步服务器时间
    TimeM.sync();
end
